[RTL8722CSM] [RTL8722DM] I2C - Send and Receive
Materials
AmebaD[AMB21 / AMB22] x 1
Arduino UNO x 1
Steps
I2C is a very common module on microcontrollers, it only takes 2 wire and able to achieve data rate at up to 3.4Mbps. It works in master-slave model and a master can simultaneously connect to up to 128 slaves, making it a very versatile communication protocol between microcontroller and sensor.
Here we are going to use Ameba as an I2C master and Arduino UNO as a slave to achieve I2C send and recv.
Before connection, make sure to upload the “Examples -> Wire -> Slave_receiver” example code to Arduino UNO.
Connection is shown as follows, here we are using PA_26 as SDA pin and PA_25 as SCL.
Note
There is currently 1 set of I2C available to MicroPython user, they are
Unit |
SDA |
SCL |
---|---|---|
0 |
PA_26 |
PA_25 |
Then copy and paste the following code line by line into REPL to see their effects.
1from machine import Pin, I2C
2i2c = I2C(scl = "PA_25", sda = "PA_26", freq=100000) # configure I2C with pins and freq. of 100KHz
3i2c.scan()
4i2c.writeto(8, 123) # send 1 byte to slave with address 8
5i2c.readfrom(8, 6) # receive 6 bytes from slave